Dalam Ruby, berpindah melampaui jalur yang menyenangkan berarti beralih dari logika linier ke posisi defensif di mana kegagalan diperlakukan sebagai objek kelas pertama bukan sebagai bencana yang menghentikan program.
1. Hierarki Penanganan Kesalahan
Ruby mendefinisikan secara prabawa hierarki penanganan kesalahan yang rapi seperti ditunjukkan pada Gambar 8.1. Setiap kesalahan merupakan instans dari kelas dalam pohon ini, dimulai dari Exception akar. Memahami pohon ini sangat penting: kesalahan tingkat aplikasi umumnya turun dari StandardError, sementara kegagalan tingkat sistem (seperti NoMemoryError) langsung turun dari Exception.
2. Kesalahan sebagai Objek Data
Berbeda dengan bahasa tingkat rendah di mana kesalahan mungkin hanya kode kembali sederhana, Ruby mengemas konteks—termasuk string pesan dan jejak eksekusi—ke dalam objek formal. Ini memungkinkan pengembang memperlakukan gangguan saat runtime sebagai data yang dapat diperiksa dan dikelola melalui pewarisan.